package cn.com.allunion.sms.service;

import com.cn.dao.util.Page;
import com.cn.entity.*;
import org.hibernate.criterion.Conjunction;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Created by YangJie on 2016/4/13.
 */
public interface SMSRecordService {
    /**
     * 根据下面八个条件进行查询
     *
     * @param userid      用户ID
     * @param operatorId  运营商ID
     * @param startDate   开始时间
     * @param endDate     结束时间
     * @param sendNumber  发送号码
     * @param businessId  业务id
     * @param sendState   状态
     * @param pageCurrent 当前页
     * @return 记录列表
     */
    public Page<SMSRecord> findByCriteria(String userid, String operatorId,
                                          Date startDate, Date endDate, String sendNumber, String businessId,
                                          String sendState, int pageCurrent) ;

    /**
     * 添加业务
     *
     * @param smsRecord 短信记录
     * @return 方法执行状态
     */
    public String addNewRecord(SMSRecord smsRecord) ;

    /**
     * 根据运营商id和运营商消息唯一识别码查询发送记录
     *
     * @param smsOperatorId     运营商id
     * @param operatorMessageID 运营商消息唯一识别码
     * @return 发送记录
     */
    public List<SMSRecord> findByIdAndObject(String smsOperatorId,
                                             String operatorMessageID) ;

    /**
     * 获取记录Id，获取整个对象，修改operatorMessageID
     */
    public String updateOperatorMessageID(String recordID,
                                          String operatorMessageID, String states) ;

//	/**
//	 * 根据smsRecordID修改states
//	 */
//	public String updateSendState(String smsRecordID,String states) ;

    /**
     * 根据 operatorMessageID 和 operateid 修改 states
     */
    public String updateSendState(String operatorMessageID, String states, String sendNumber) ;

//	/**
//	 * 根据 operatorMessageID 和 operateid 修改 states
//	 */
//	public String updateSendState(String operateid, String operatorMessageID,
//			String states, String sendNumber);
}
